#ifndef __SE_WEBPAGE_H__
#define __SE_WEBPAGE_H__

#include <string>
#include <vector>
#include <map>
#include <set>

using std::set;
using std::map;
using std::vector;
using std::string;


class Configuration;
class WordSegmentation;

class webPage
{
    friend bool operator==(const webPage & lhs, const webPage & rhs){
        if((lhs._docid==rhs._docid)&&
          (lhs._docTitle==rhs._docTitle)&&
          (lhs._docUrl==rhs._docUrl)&&
          (lhs._docContent==rhs._docContent)){
            return true;
        }else{
            return false;
        }
    }

    friend bool operator < (const webPage & lhs, const webPage & rhs){
        if(lhs._docid < rhs._docid){
            return true;
        }else{
            return false;
        }
    }
    
public:
    webPage();//无参构造函数
    webPage(const string & doc , WordSegmentation * jieba);//有参构造函数
    ~webPage();//析构函数
    int getDocid();//获取文章的docid
    string getTile();//获取文章的标题
    string getUrl();//获取文章的URL
    string summary(const vector<string> & queryWord);//文章概要
    map<string, int> & getWordsMap();//获取文档的词频统计map
private:
    void processDoc(const string & doc);//对格式化文档进行处理
    size_t nBytesCode(const char ch);
private:
    const static int TOP_NUM = 20;
    int     _docid;//文档id
    string  _docTitle;//文档标题
    string  _docUrl;//文档URL
    string  _docContent;//文档内容
    string  _docSummary;//文档摘要，自动生成，非固定
    vector<string>  _topWords;//词频最高的20个单词
    map<string, int>     _wordsMap;//保存每篇文章的所有词语和词频，不包括停用词
    WordSegmentation * _jieba;
};

#endif // end of __SE_WEBPAGE_H__

